import sys
import os
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget

from ui_code.login_ui import LoginPage
from ui_code.xmind_to_tapd_ui import XMindToTapdPage
from ui_code.tapd_to_xmind_ui import TapdToXmindPage
from ui_code.xmind_to_excel_ui import XMindToExcelPage
from ui_code.t_plans_ui import TestPlansPage
from ui_code.other_ui import OtherPage
from ui_code.common_ui import apply_global_style, get_project_root
from comm.common_code import logger, log_to_ui_info, log_to_ui_error
from function_code.login.login_information import account_and_key_verification
from openpyxl import load_workbook


class MainWindow(QMainWindow):
    def __init__(self) -> None:
        super().__init__()
        self.setWindowTitle("TAPD工具")
        self.resize(2000, 1000)  # 更合理的默认窗口大小，避免全屏显示
        self._init_tabs()

    def _init_tabs(self) -> None:
        tabs = QTabWidget()
        tabs.addTab(LoginPage(), "登录")
        tabs.addTab(XMindToTapdPage(), "XMind→TAPD")
        tabs.addTab(TapdToXmindPage(), "TAPD→Xmind")
        tabs.addTab(XMindToExcelPage(), "XMind→Excel")
        tabs.addTab(TestPlansPage(), "测试计划")
        tabs.addTab(OtherPage(), "其他")
        self.setCentralWidget(tabs)

message_info = ""
def auto_verify_login_info():
    """软件启动时自动验证登录信息"""
    global message_info
    try:
        # 获取配置文件路径
        excel_path = get_project_root() / "files" / "config_file" / "confg.xlsx"
        
        # 检查配置文件是否存在
        if os.path.exists(excel_path):
            # 读取配置文件
            wb = load_workbook(str(excel_path))
            ws = wb.active
            
            # 获取账号、密钥和cookie信息
            account = ws.cell(row=2, column=2).value or ""
            key = ws.cell(row=2, column=3).value or ""
            cookie = ws.cell(row=2, column=6).value or ""
            
            # 检查是否有完整的登录信息
            if account and key and cookie:
                logger.info("检测到已保存的登录信息，正在自动验证...")
                log_to_ui_info("检测到已保存的登录信息，正在自动验证...")
                # 执行验证
                success, message, access_token = account_and_key_verification(account, key, cookie)
                if success:
                    logger.info("自动验证登录信息成功！无需重复操作，请使用其他界面功能！")
                    log_to_ui_info("自动验证登录信息成功！无需重复操作，请使用其他界面功能！")
                    message_info += message
                    message_info += "\n无需重复操作，请使用其他界面功能！\n"
                else:
                    logger.warning(f"自动验证登录信息失败: {message}")
                    log_to_ui_error(f"自动验证登录信息失败: {message}")
                    message_info += message
            else:
                logger.info("配置文件中缺少完整的登录信息，跳过自动验证")
                log_to_ui_info("配置文件中缺少完整的登录信息，跳过自动验证")
                message_info += "配置文件中缺少完整的登录信息，跳过自动验证\n"
        else:
            logger.info("配置文件不存在，跳过自动验证")
            log_to_ui_info("配置文件不存在，跳过自动验证")
            message_info += "配置文件不存在，跳过自动验证\n"
    except Exception as e:
        logger.error(f"自动验证登录信息时发生错误: {str(e)}")
        log_to_ui_error(f"自动验证登录信息时发生错误: {str(e)}")
        message_info += f"自动验证登录信息时发生错误: {str(e)}\n"

def main() -> None:
    app = QApplication(sys.argv)
    apply_global_style(app)
    
    # 软件启动时自动验证登录信息（在创建窗口之前执行，确保日志正确显示）
    auto_verify_login_info()
    
    win = MainWindow()
    win.show()
    # 显示自动验证登录信息
    log_to_ui_info(message_info)
    sys.exit(app.exec_())



if __name__ == "__main__":
    main()


